With the availability of communication networks connecting large numbers of data processing devices, an increasing number of applications and services for users are executed involving more than one data processing device. Applications executed on a plurality of data processing devices (i.e., distributed applications) often involve an exchange of data via communication networks, such as local area networks, such as company-wide intranets, or wide area networks, such as the Internet.
Distributed applications may, for example, include office applications for managing documents and data files, or may include applications for visualizing information, or may include banking applications.
A distributed application providing a service to a user may be executed with the involvement of a server data processing device and a client data processing device, which is operated by a user. The user may, for example, launch a distributed application by entering a corresponding command at the client data processing device. Certain parts (i.e., components or modules) of the distributed application may reside on the client data processing device and may invoke further parts or modules of the distributed application at the server data processing device. These parts can be, for example, code pieces, applets, servlets, or programs.
For example, if a user desires to edit a document, a program module at the client data processing device could initialize a screen of a display unit at the client for receiving information to be displayed and may instruct a program module at the server data processing device, via a network, to retrieve the requested document and to process the document as required (e.g., to bring the document into a screen format), and to return the document to the client data processing device to be displayed on a client display.
In the above described example, processing operations for the requested distributed application may to a large extent be executed at the server data processing device, allowing the client data processing device to maintain fewer resources, i.e., to maintain less storage space reserved for application program software, and to provide less processing capabilities. This may be practical in case the client data processing device is a small unit, such as a mobile device.
Even though the above-described example provides an advantage over maintaining all resources at a client data processing device, it still requires that the parts or program modules of the distributed application, which are required for handling data or instructions at the client data processing device, are maintained locally at the client data processing device. Otherwise, a required communication between the client data processing device and the server data processing device could not be established or maintained.
For example, it may still be required that the client data processing device maintains potentially larger modules for visualizing information and playback of information, and thus the client may still have to allocate considerable resources for storing corresponding application program modules and providing the necessary processing capabilities.
Further, if the distributed application is modified (e.g., if a new release version becomes available), the parts of the distributed application program residing at the client data processing device need to be updated in a potentially expensive, time consuming and cumbersome process.
An approach to solve this problem would be to divide application modules of the distributed application at the client data processing device into smaller partitions and to transfer at least some of the partitions to the server data processing device. Then, a first program module could be started at the client data processing device, connecting to the server data processing device, and instructing the server data processing device to execute the further modules of the distributed application, as outlined above.
However, in many distributed application, program modules available for performing the required data and information handling operations at the client data processing device stay active as long as they are needed for performing the required operations at the client data processing device. Such a program module would not await the completion of the execution of a further module of the distributed application performed at the server data processing device, leading to a loss of synchronization between the individual program modules of the distributed application.
Based on the above-described problems of data processing systems, it is therefore desirable to improve them.